Lecture 3:卷积神经网络(CNN)

Lectured by HUNG-YI LEE (李宏毅) Recorded by Yusheng zhao(yszhao0717@gmail.com


透过Convolutional Neural Network(CNN)这个例子,来探讨network架构的思想。

CNN是专门应用在影像数据上的。假设我们现在要做Image Classification任务。满足以下几个前提:输入图像尺寸是一定的(如果有图形不一就先rescale成一样大);模型的目标是分类,所以每个class(类)表示成一个one-hot的向量,最终得到的结果是——这个向量的维度代表了分类器可辨识出的种类数。

一张图片 三维的张量(宽、高、channel)。每隔pixel由(R,G,B)组成。输入向量(=三维的张量),假如宽高为28×28,则输入向量尺度为28×28×3(28×72)。

如果输入第一层network是全连接层,那么参数为28×28×神经元的数量。如此多的参数很容易导致overfitting,而且训练的代价也增大。我们可否减少参数呢?当然可以,首先我们先认知下图像本身的若干特点👇

Benefit of Convolutional Layer

Fully Connected Layer全连接层(弹性最大)===>可以从一些patterns分类一张图像,得到receptive field(弹性变小) ==> 共享参数。至此,我们可以得到(定义了):

Convolutional Layer = Receptive Field + Parameter Sharing

包含了Convolutional Layer的network就是Convolutional Neuron Network(CNN)。可以看到虽然CNN的bodel bias很大,但是由于CNN的设计特点是针对图像识别的,所以能在图像分类任务上表现不俗。

上述中所说的“共享参数”即filter(size:3×3×channel),neuron的权重weight就是张量filter的组成数值内容。Filter的高度就是待处理图像的channel,但第二层的filter不一样。考虑一定范围的filter真实考虑到的feature map的范围更大。此处意义的卷积(Convolutional):一个filter扫过整张图像。(或者不同的neurons间可以共享参数)

下面展示整个CNN的样子:

flatten的作用就是把图像中的矩阵拉直变成一个向量,然后输入一个Fully Connected Layers,之后可能要经过一个,然后最终得到一个图像辩识的结果。


*CNN用来下围棋

把棋盘中的盘势当作向量(19×19 vector),落子(Black:1;white:-1;none:0)输入network,当作一个19×19的分类问题。

什么地方(符合什么样特征的任务)可以适合用CNN呢?

针对不同的任务,CNN中的具体设计肯定稍有不同

缺点